package io.gitee.huangjianbo.supos.openapi.core.thread;

import java.io.Closeable;

import io.gitee.huangjianbo.supos.openapi.core.config.SuposEndpoint;
import io.gitee.huangjianbo.supos.openapi.core.http.HttpLanguage;

/**
 * 客户端上下文
 * 
 * @author tomcat
 * @version 1.0
 */
public interface ClientContext extends Closeable {

    /**
     * 获取认证票据
     * 
     * @return 当前会话的认证票据
     */
    String getTicket();

    /**
     * 设置认证票据
     * 
     * @param ticket 新的认证票据
     */
    void setTicket(String ticket);

    /**
     * 获取API访问密钥
     * 
     * @return 当前配置的访问密钥
     */
    String getAccessKey();

    /**
     * 设置API访问密钥
     * 
     * @param accessKey 新的访问密钥
     */
    void setAccessKey(String accessKey);

    /**
     * 获取API安全密钥
     * 
     * @return 当前配置的安全密钥
     */
    String getSecretKey();

    /**
     * 设置API安全密钥
     * 
     * @param secretKey 新的安全密钥
     */
    void setSecretKey(String secretKey);

    /**
     * 获取租户标识
     * 
     * @return 当前会话关联的租户ID
     */
    String getTenantId();

    /**
     * 设置租户标识
     * 
     * @param tenantId 新的租户ID
     */
    void setTenantId(String tenantId);

    /**
     * 获取SupOS服务端点配置
     * 
     * @return 当前配置的服务端点信息
     */
    SuposEndpoint getEndpoint();

    /**
     * 设置SupOS服务端点配置
     * 
     * @param endpoint 新的服务端点配置
     */
    void setEndpoint(SuposEndpoint endpoint);

    /**
     * 获取HTTP语言设置
     * 
     * @return 当前配置的国际化语言
     */
    HttpLanguage getLanguage();

    /**
     * 设置HTTP语言设置
     * 
     * @param language 新的国际化语言配置
     */
    void setLanguage(HttpLanguage language);
}
